package Com.webserver.http;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;



import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * HttpContext 封装当前服务器的有关的静态环境信息
 * 文件类型映射（mime-mapping）是静态环境信息
 */
public class HttpContext {
    /**
     * 全部用户共享的文件类型映射集合
     */
    private static Map<String,String> mimemapping =new HashMap<>();
    static {
        initMimeMapping();
    }
    
    /**
     * 定义初始化方法，封装mimemapping集合的初始化过程
     */
    private static void initMimeMapping(){
        
        try {
            File file=new File("config/web.xml");
            SAXReader reader=new SAXReader();
            Document doc=reader.read(file);
            Element root=doc.getRootElement();
            List<Element>list=root.elements("mime-mapping");
            for (Element e:list){
                String s=e.elementTextTrim("extension");
                String s1=e.elementTextTrim("mime-type");
                mimemapping.put(s,s1);
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
     * 根据文件的扩展名，检查其对应的 媒体类型（mime type）
     * 如：ext是png 则返回 image/png
     * @param ext  扩展名
     * @return     mime 类型
     */
    public static String getMimeType(String ext){
        return mimemapping.get(ext);
    }

    public static void main(String[] args) {
        //JVM 加载 HttpContext 时候就会自动初始化 mimeMapping
        System.out.println(mimemapping);
    }
}
